<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of UsuarioPerfilDAO
 *
 * @author thales
 */
class UsuarioPerfilDAO {
    public $conn = null;
    
    public function __construct() {
        $this->conn = DB::getConn();
    }
    
    /**
     * Método responsável por vuscar os dados do perfil do usuário e retornar um objeto do mesmo tipo.
     * 
     * @param UsuarioPerfilVO $objUsuarioPerfil 
     * @return UsuarioPerfilVO $objUsuarioPerfil 
     */
    public function pesquisar(UsuarioPerfilVO $objUsuarioPerfil ){
        $sql = 'select 
                    * 
                from 
                    UsuarioPerfil 
                where 
                    usuario_id = ?';
        
        $stt = $this->conn->prepare($sql);  
        $stt->bindValue(1, $objUsuarioPerfil->getUsuarioId(), PDO::PARAM_INT);
        
        if ( !$stt->execute() ){
            throw new UserException('Acesso indisponível no momento! <br> Tente mais tarde!');
        } 
        $usuarioPerfil = $stt->fetch(PDO::FETCH_ASSOC);
        
        $objUsuarioPerfil->setPerfilId($usuarioPerfil['perfil_id']);
        $objUsuarioPerfil->setId($usuarioPerfil['id']);
    }
    
    /**
     * Método responsável por salva um perfil relacionado ao usuário.<br>
     * 
     * @param UsuarioPerfilVO $objUsuarioPerfil
     * @return true ou false com Excepition. 
     */
    public function salvar(UsuarioPerfilVO $objUsuarioPerfil){
        $sql = 'Insert into usuarioperfil (usuario_id,perfil_id) values (?,?)';
        
        $stt = $this->conn->prepare($sql);  
        $stt->bindValue(1, $objUsuarioPerfil->getUsuarioId(),PDO::PARAM_INT);
        $stt->bindValue(2, $objUsuarioPerfil->getPerfilId(),PDO::PARAM_INT);
        
        if ( !$stt->execute() ){
            throw new Exception('Não foi possível salvar o cliente!<br>' . var_dump($stt->errorInfo()) );
        } 
        
        LogDAO::getInstance()->salvar(__METHOD__, $this->conn->lastInsertId(), __CLASS__);
        
        return true;;
    }
    
     /**
     * Método responsável por alterar um perfil relacionado ao usuário.<br>
     * 
     * @param UsuarioPerfilVO $objUsuarioPerfil
     * @return true ou false com Excepition. 
     */
    public function alterar(UsuarioPerfilVO $objUsuarioPerfil){
        
        $sql = 'Update  
                    usuarioperfil 
                set 
                    perfil_id = ? 
                where
                    usuario_id = ?';
        
        $stt = $this->conn->prepare($sql);  
        $stt->bindValue(1, $objUsuarioPerfil->getPerfilId(),PDO::PARAM_INT);
        $stt->bindValue(2, $objUsuarioPerfil->getUsuarioId(),PDO::PARAM_INT);
        
        if ( !$stt->execute() ){
            throw new Exception('Não foi possível salvar o cliente!<br>' . var_dump($stt->errorInfo()) );
        } 
        
        LogDAO::getInstance()->salvar(__METHOD__, $objUsuarioPerfil->getPerfilId(), __CLASS__);
        
        return true;;
    }
    
    /**
     * Método para excluir o perfil do usuário do sistema.
     * 
     * @param UsuarioVO $objUsuarioVO
     * @return boolean 
     */
    public function excluir(UsuarioPerfilVO $objUsuarioPerfilVO ){
        $sql = 'delete from usuarioPerfil where usuario_id = ?';
        
        $stt = $this->conn->prepare($sql);
        $stt->bindValue(1, $objUsuarioPerfilVO->getUsuarioId(), PDO::PARAM_INT);
        
        if ( !$stt->execute() ){
            throw new Exception('Não foi possível salvar o cliente!<br>' . var_dump($stt->errorInfo()) );
        } 
        
        LogDAO::getInstance()->salvar(__METHOD__, $objUsuarioPerfilVO->getUsuarioId(), __CLASS__);
        
        return true;
    }
}

?>
